home *** CD-ROM | disk | FTP | other *** search
- /* PROTECTION SETUP FILE
-
- */
-
- #ifndef HTAAPROT_H
- #define HTAAPROT_H
-
- #ifndef HTUTILS_H
- #include "HTUtils.h"
- #endif /* HTUTILS_H */
- #include "HTGroup.h"
- #include "HTAssoc.h"
-
- #ifdef SHORT_NAMES
- #define HTAAgUid HTAA_getUid
- #define HTAAgGid HTAA_getGid
- #define HTAAgDPr HTAA_setDefaultProtection
- #define HTAAsCPr HTAA_setCurrentProtection
- #define HTAAgCPr HTAA_getCurrentProtection
- #define HTAAgDPr HTAA_getDefaultProtection
- #define HTAAclPr HTAA_clearProtections
- #endif /*SHORT_NAMES*/
- /*
-
- Server's Representation of Document (Tree) Protections
-
- */
-
- typedef struct {
- char * template; /* Template for this protection */
- char * filename; /* Current document file */
- char * uid_name; /* Effective uid (name of it) */
- char * gid_name; /* Effective gid (name of it) */
- GroupDef * mask_group; /* Allowed users and IP addresses */
- HTList * valid_schemes;/* Valid authentication schemes */
- HTAssocList * values; /* Association list for scheme specific */
- /* parameters. */
- } HTAAProt;
- /*
-
- Callbacks for rule system
-
- The following three functioncs are called by the rule system:
-
- HTAA_clearProtections() when starting to translate a filename
-
- HTAA_setDefaultProtection() when "defprot" rule is matched
-
- HTAA_setCurrentProtection() when "protect" rule is matched
-
- Protection setup files are cached by these functions.
-
- */
-
- /* PUBLIC HTAA_setDefaultProtection()
- ** SET THE DEFAULT PROTECTION MODE
- ** (called by rule system when a
- ** "defprot" rule is matched)
- ** ON ENTRY:
- ** cur_docname is the current result of rule translations.
- ** prot_filename is the protection setup file (second argument
- ** for "defprot" rule, optional)
- ** eff_ids contains user and group names separated by
- ** a dot, corresponding to the effective uid
- ** gid under which the server should run,
- ** default is "nobody.nogroup" (third argument
- ** for "defprot" rule, optional; can be given
- ** only if protection setup file is also given).
- **
- ** ON EXIT:
- ** returns nothing.
- ** Sets the module-wide variable default_prot.
- */
- PUBLIC void HTAA_setDefaultProtection PARAMS((CONST char * cur_docname,
- CONST char * prot_filename,
- CONST char * eff_ids));
-
-
-
- /* PUBLIC HTAA_setCurrentProtection()
- ** SET THE CURRENT PROTECTION MODE
- ** (called by rule system when a
- ** "protect" rule is matched)
- ** ON ENTRY:
- ** cur_docname is the current result of rule translations.
- ** prot_filename is the protection setup file (second argument
- ** for "protect" rule, optional)
- ** eff_ids contains user and group names separated by
- ** a dot, corresponding to the effective uid
- ** gid under which the server should run,
- ** default is "nobody.nogroup" (third argument
- ** for "protect" rule, optional; can be given
- ** only if protection setup file is also given).
- **
- ** ON EXIT:
- ** returns nothing.
- ** Sets the module-wide variable current_prot.
- */
- PUBLIC void HTAA_setCurrentProtection PARAMS((CONST char * cur_docname,
- CONST char * prot_filename,
- CONST char * eff_ids));
-
-
- /* SERVER INTERNAL HTAA_clearProtections()
- ** CLEAR DOCUMENT PROTECTION MODE
- ** (ALSO DEFAULT PROTECTION)
- ** (called by the rule system)
- ** ON ENTRY:
- ** No arguments.
- **
- ** ON EXIT:
- ** returns nothing.
- ** Frees the memory used by protection information.
- */
- PUBLIC void HTAA_clearProtections NOPARAMS;
- /*
-
- Getting Protection Settings
-
- HTAA_getCurrentProtection() returns the current protection mode (if there was a
- "protect" rule). NULL, if no "protect" rule has been matched.
-
- HTAA_getDefaultProtection() sets the current protection mode to what it was set to
- by "defprot" rule and also returns it (therefore after this call also
- HTAA_getCurrentProtection() returns the same structure.
-
- */
-
- /* PUBLIC HTAA_getCurrentProtection()
- ** GET CURRENT PROTECTION SETUP STRUCTURE
- ** (this is set up by callbacks made from
- ** the rule system when matching "protect"
- ** (and "defprot") rules)
- ** ON ENTRY:
- ** HTTranslate() must have been called before calling
- ** this function.
- **
- ** ON EXIT:
- ** returns a HTAAProt structure representing the
- ** protection setup of the HTTranslate()'d file.
- ** This must not be free()'d.
- */
- PUBLIC HTAAProt *HTAA_getCurrentProtection NOPARAMS;
-
-
-
- /* PUBLIC HTAA_getDefaultProtection()
- ** GET DEFAULT PROTECTION SETUP STRUCTURE
- ** (this is set up by callbacks made from
- ** the rule system when matching "defprot"
- ** rules)
- ** ON ENTRY:
- ** HTTranslate() must have been called before calling
- ** this function.
- **
- ** ON EXIT:
- ** returns a HTAAProt structure representing the
- ** default protection setup of the HTTranslate()'d
- ** file (if HTAA_getCurrentProtection() returned
- ** NULL, i.e. if there is no "protect" rule
- ** but ACL exists, and we need to know default
- ** protection settings).
- ** This must not be free()'d.
- */
- PUBLIC HTAAProt *HTAA_getDefaultProtection NOPARAMS;
- /*
-
- Get User and Group IDs to Which Set to
-
- */
-
- #ifndef VMS
- /* PUBLIC HTAA_getUid()
- ** GET THE USER ID TO CHANGE THE PROCESS UID TO
- ** ON ENTRY:
- ** No arguments.
- **
- ** ON EXIT:
- ** returns the uid number to give to setuid() system call.
- ** Default is 65534 (nobody).
- */
- PUBLIC int HTAA_getUid NOPARAMS;
-
-
- /* PUBLIC HTAA_getGid()
- ** GET THE GROUP ID TO CHANGE THE PROCESS GID TO
- ** ON ENTRY:
- ** No arguments.
- **
- ** ON EXIT:
- ** returns the uid number to give to setgid() system call.
- ** Default is 65534 (nogroup).
- */
- PUBLIC int HTAA_getGid NOPARAMS;
- #endif /* not VMS */
- /*
-
- For VMS:
-
- */
-
- #ifdef VMS
- /* PUBLIC HTAA_getUidName()
- ** GET THE USER ID NAME (VMS ONLY)
- ** ON ENTRY:
- ** No arguments.
- **
- ** ON EXIT:
- ** returns the user name
- ** Default is "" (nobody).
- */
- PUBLIC char * HTAA_getUidName NOPARAMS;
-
- /* PUBLIC HTAA_getFileName
- ** GET THE FILENAME (VMS ONLY)
- ** ON ENTRY:
- ** No arguments.
- **
- ** ON EXIT:
- ** returns the filename
- */
- PUBLIC char * HTAA_getFileName NOPARAMS;
- #endif /* VMS */
- /*
-
- */
-
- #endif /* not HTAAPROT_H */
- /*
-
- End of file HTAAProt.h. */
-